package com.xd.core.note;


import com.xd.core.api.dto.SignContractDto;
import com.xd.core.api.dto.SinglePayDto;
import com.xd.core.api.entity.RepaymentOrderInfo;
import com.xd.core.business.entity.Credit;
import com.xd.core.business.entity.IncomingCommonLoan;
import com.xd.core.business.entity.IncomingInfo;
import com.xd.core.business.entity.InsuranceCompanyInfo;
import com.xd.core.note.eventEntity.AssignmentOfDebtEvent;
import com.xd.core.note.eventEntity.DebtEvent;

import java.math.BigDecimal;
import java.util.List;

public interface IAsyncService {

     void getNext(Integer repayId) throws Exception;
     void zqzrtz(AssignmentOfDebtEvent assignmentOfDebtEvent);
     void assignmentOfDebtConfirmation(AssignmentOfDebtEvent assignmentOfDebtEvent);
     void dkjqzm(DebtEvent debtEvent);
     void guarantee(Credit credit, IncomingInfo incomingInfo, String dkcontractNo, String dbcontractNo, String Add, List<IncomingCommonLoan> incomingCommonLoans, SignContractDto signContractDto);
     void carmortgage(Integer id, String dkcontractNo, String dycontractNo, IncomingInfo incomingInfo, List<IncomingCommonLoan> incomingCommonLoans, BigDecimal outLoan, String Add, Integer outId);
     void roommortgage(Integer id, String dkcontractNo, String dycontractNo, IncomingInfo incomingInfo, List<IncomingCommonLoan> incomingCommonLoans, BigDecimal outLoan, String Add, Integer outId);

     void deductionOrder(SinglePayDto singlePayDto);
     void deductionDebt(SinglePayDto singlePayDto);
     void borrowing(SignContractDto signContractDto);
     void signContract(SignContractDto signContractDto);
     void notarizationContract(SignContractDto signContractDto);
     void extraBorrowing(Integer id, String Y2bank, String Y2BankCard, Integer outId, Credit credit);


     void addSignerBDJKHT(Integer incomingId, String contractNo, IncomingInfo incomingInfo,Integer outId);
     void addSignerFLWSSDDZHT(Integer incomingId, String contractNo, IncomingInfo incomingInfo,Integer outId);
     void addSignerWTDKSQSHT(IncomingInfo incomingInfo, String contractNo, Integer outId);
     void addSignerWTTBHT(IncomingInfo incomingInfo, String contractNo, InsuranceCompanyInfo insuranceCompanyInfo, Integer outId);
     void addsignerTBSQS(IncomingInfo incomingInfo, String contractNo, Integer outId);

    /*
     * 通知第三方系统放款结果
     * 响应字符串 "OK"
     * */
    void advanceOutAmount(String orderNo, Integer companyId, String payStatus, String transRemark, String bills);

    /*
      * 通知第三方系统代扣结果
      * 响应字符串 "OK"
      * */
     void advanceSinglePay(RepaymentOrderInfo repaymentOrderInfo, String payStatus, String failCause);
}
